import { noop } from './noop';
import { thrower } from './thrower';

/**
 * 加载图片
 * 
 * @desc 当图片路径非法、图片加载失败时，callbak不会传出任何参数, 反之表示图片加载成功
 * 
 * 用例: 
 *  const src = './1.png';
 *  loadImage(src, function(flag){
 *      if (flag) {
 *         // 图片加载成功之后的处理
 *         // .... 
 *      } else {
 *         // 图片加载失败的处理
 *      }
 *  })
 * 
 * @param {object} elem 
 * @param {function} callback 
 */
export function loadImage(src, callback) {
    'use strict';

    callback = 'function' === typeof callback ? callback : noop;

    if ('string' !== typeof src && src !== '') {

        thrower('[loadImage Exception]', `Invalid image path. (${src})`); // 无效的图片路径

        callback();

    } else {
        const img = new Image();

        img.src = src;

        img.onload = function () {

            callback(true);  // 图片加载成功
        }

        img.onerror = function () {
            thrower('[loadImage Exception]', `Load failed, The image path is ${src}.`); // 图片加载失败
            callback();
        }
    }
}